home *** CD-ROM | disk | FTP | other *** search
- property pSpr, pLidUpMember, pJugMember, pGlassMask, pGlassIce, pBlended, pLidUpNoIceMember, pLidUpWithIceMember, pNoShadow, pIceAmount, pMaxIceIncrements, pLidUp, pLidTimer, pLastDest, pGlassType, pFullBlender, pEmptyBlender, pPouring, pContents, pContentString, pTilt, pCapacity, pIcePerScoop, pOverItem, pTimer, pHotRect
- global gFloatSprite
-
- on beginSprite me
- pGlassType = #blender
- pSpr = sprite(me.spriteNum)
- pGlassMask = sprite(me.spriteNum + 1)
- pGlassIce = pSpr
- pJugMember = pSpr.member
- pMaskMember = pJugMember
- pEmptyBlender = pJugMember
- pLidUpNoIceMember = nextMember(pJugMember, -1)
- pLidUpWithIceMember = nextMember(pJugMember, -4)
- pNoShadow = nextMember(pJugMember, -2)
- pFullBlender = nextMember(pJugMember, -3)
- pCapacity = 16.0
- pMaxIceIncrements = 1
- pIcePerScoop = pCapacity / (2.0 * pMaxIceIncrements)
- mEmptyGlass(me)
- pLidUp = 0
- pOverItem = 0
- mReplaceIt(me, 1)
- pHotRect = rect(248, 315, 284, 365)
- end
-
- on mEmptyGlass me
- global gLastVessel
- if gLastVessel = pGlassType then
- setPourClockText(" The Blender is Empty")
- end if
- pIceAmount = 0
- pBlended = 0
- pContents = [:]
- pContentString = EMPTY
- pLastDest = VOID
- pLidUpMember = pLidUpNoIceMember
- pJugMember = pEmptyBlender
- pSpr.member = pJugMember
- sendSprite(me.spriteNum + 1, #mEmptyGlass)
- end
-
- on mEmptyIfLastVessel me, barGlassSprite
- if pLastDest = barGlassSprite then
- mEmptyGlass(me)
- end if
- end
-
- on mReplaceTop me
- if pLidUp or (pSpr.member <> pJugMember) then
- pLidUp = 0
- pLidTimer = VOID
- soundFX2("top_on_pitcher", 0, 0)
- pSpr.member = pJugMember
- end if
- end
-
- on mPopTop me, Force
- if not pLidUp then
- if not Force then
- if voidp(pLidTimer) then
- pLidTimer = nowTicks()
- exit
- else
- if ticksSince(pLidTimer) < 15 then
- exit
- end if
- end if
- end if
- soundFX2("top_off_pitcher", 0, 0)
- pSpr.member = pLidUpMember
- pLidUp = 1
- mupdateDisplay(me)
- end if
- end
-
- on mBlended me
- if not voidp(pContents[#ice]) then
- pContents[#blend] = 1
- if voidp(getaProp(pContents, #Slush)) then
- pContents[#Slush] = 0
- end if
- pContents[#Slush] = pContents[#Slush] + (pContents[#ice] / 2.0)
- pContents[#ice] = 0
- deleteProp(pContents, #ice)
- pIceAmount = 0
- mRefreshIce(me)
- sendSprite(pGlassMask, #mUpdateLiquidLevel, pSpr)
- mupdateDisplay(me)
- pBlended = 1
- end if
- end
-
- on mupdateDisplay me
- global gLastVessel
- gLastVessel = pGlassType
- pContentString = buildVesselContentList(pSpr, pGlassType, " The Blender is Empty")
- showDrinkContents(pGlassType, pContentString, VOID)
- end
-
- on mStirred me
- if countStirrableIngredients(pContents) > 1 then
- pContents[#stir] = 1
- end if
- end
-
- on mInHotRect me
- return inside(the mouseLoc, pHotRect)
- end
-
- on mouseEnter me
- pTimer = nowTicks()
- pLidTimer = VOID
- pOverItem = 1
- if draggingBarTopGlass() then
- exit
- end if
- showToolTip(pSpr, pGlassType)
- end
-
- on mouseWithin me
- if mInHotRect(me) then
- if draggingBottleOrSpoon() and not pPouring then
- mPopTop(me)
- else
- if draggingIngredient() then
- pTimer = nowTicks()
- else
- if tipTickRange(pTimer) then
- forceToolTip(pSpr, pGlassType)
- mupdateDisplay(me)
- else
- dismissToolTip()
- end if
- end if
- end if
- else
- mouseLeave(me)
- end if
- end
-
- on mouseLeave me
- if not pPouring and draggingBottleOrSpoon() then
- mReplaceTop(me)
- end if
- pOverItem = 0
- if not draggingSpoon() then
- hideToolTip()
- hideDrinkContents()
- end if
- end
-
- on mSetNewTilt me, newTilt
- pTilt = newTilt
- if pTilt = #right then
- pDragMember = nextMember(pEmptyBlender, 1)
- else
- pDragMember = nextMember(pEmptyBlender, 11)
- end if
- return pDragMember
- end
-
- on mouseDown me
- if the doubleClick then
- exit
- end if
- if draggingAnything() and not pPouring then
- mPopTop(me, 1)
- if draggingBottleThang() then
- pourIt(mGetReceiveSound(me))
- end if
- else
- if pPouring then
- replaceDraggingAnything()
- else
- replaceDraggingAnything()
- sendSprite(gFloatSprite, #mPickUpBottle, pSpr, VOID, VOID, pGlassType, mGetPourSound(me), "pitcher_off_blender", the mouseLoc - point(20, 15))
- pSpr.member = pNoShadow
- pPouring = 1
- pGlassMask.visible = 0
- end if
- end if
- end
-
- on mOverItem me, bottleSprite, spoutLoc
- if pPouring then
- return 0
- else
- return inside(spoutLoc, pHotRect)
- end if
- end
-
- on mReplaceIt me, noSound
- pSpr.visible = 1
- pSpr.member = pJugMember
- pPouring = 0
- pTilt = #left
- pGlassMask.visible = 1
- if not noSound then
- soundFX2("pitcher_on_blender", 0, 0)
- end if
- end
-
- on mGetReceiveSound me
- if mHasIce(me) then
- soundName = "water_into_blender_wice"
- else
- soundName = "water_into_blender"
- end if
- return soundName
- end
-
- on mGetPourSound me
- if mIsEmpty(me) then
- soundName = VOID
- else
- if pBlended then
- soundName = "blender_slush_into_glass"
- else
- soundName = VOID
- end if
- end if
- return soundName
- end
-
- on mIsHoldingVolume me
- return calcContents(pContents)
- end
-
- on mIsHoldingLiquor me
- return calcLiquorContents(pContents)
- end
-
- on mIsHoldingLiquid me
- return calcLiquidContents(pContents)
- end
-
- on mIsHoldingPourable me
- return calcPourableContents(pContents)
- end
-
- on mIsEmpty me
- return calcEmpty(pContents)
- end
-
- on mHasIce me
- if voidp(pContents[#ice]) then
- return 0
- else
- return integer(pContents[#ice])
- end if
- end
-
- on mGetBlendSound me
- if mIsEmpty(me) then
- soundName = "blend_empty"
- else
- if mHasIce(me) then
- soundName = "blend_icewater"
- else
- soundName = "blend_water"
- end if
- end if
- return soundName
- end
-
- on mFill me, ingredient, liquidColor
- return fillVessel(me, ingredient, liquidColor)
- end
-
- on mFillIce me, masterSprite
- if (pIceAmount + 1) <= pMaxIceIncrements then
- pJugMember = pFullBlender
- pLidUpMember = pLidUpWithIceMember
- pSpr.member = pLidUpMember
- else
- alertBeep()
- return 0
- end if
- addIce(pSpr, masterSprite, pMaxIceIncrements, VOID, "ice_into_blender")
- end
-
- on mRefreshIce me
- if pIceAmount = pMaxIceIncrements then
- pJugMember = pFullBlender
- pLidUpMember = pLidUpWithIceMember
- else
- pJugMember = pEmptyBlender
- pLidUpMember = pLidUpNoIceMember
- end if
- pSpr.member = pJugMember
- end
-